package com.gobang.service;

/**
 * 棋盘管理器接口
 * 提供棋盘状态维护和操作功能
 * 
 * @author System
 * @since 1.0.0
 */
public interface BoardManager {

    /**
     * 在指定位置落子
     *
     * @param board 棋盘状态
     * @param row 行坐标
     * @param col 列坐标
     * @param color 棋子颜色（1-黑子，2-白子）
     * @return 落子是否成功
     */
    boolean placeStone(int[][] board, int row, int col, int color);

    /**
     * 验证落子是否合法
     *
     * @param board 棋盘状态
     * @param row 行坐标
     * @param col 列坐标
     * @param color 棋子颜色
     * @param currentPlayerColor 当前玩家颜色
     * @return 是否合法
     */
    boolean validateMove(int[][] board, int row, int col, int color, int currentPlayerColor);

    /**
     * 获取棋盘状态的JSON字符串
     *
     * @param board 棋盘状态
     * @return JSON字符串
     */
    String getBoardJson(int[][] board);

    /**
     * 从JSON字符串解析棋盘状态
     *
     * @param boardJson JSON字符串
     * @return 棋盘状态
     */
    int[][] parseBoardFromJson(String boardJson);

    /**
     * 重置棋盘
     *
     * @param board 棋盘状态
     */
    void resetBoard(int[][] board);

    /**
     * 获取指定位置的棋子
     *
     * @param board 棋盘状态
     * @param row 行坐标
     * @param col 列坐标
     * @return 棋子颜色（0-空位，1-黑子，2-白子）
     */
    int getStone(int[][] board, int row, int col);

    /**
     * 检查棋盘是否已满
     *
     * @param board 棋盘状态
     * @return 是否已满
     */
    boolean isBoardFull(int[][] board);
} 